<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui" 
      xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<h:head/>
<h:body>
    <ui:composition>
        <h:form id="formMntCuenta">
        
            <h1>Mantenimiento Cuenta</h1>
            <p:separator/>
            <h:panelGrid border="0" columns="1" >  

                <p:growl id="growlMntCuenta" showDetail="true" life="4000" />
                <p:commandButton value="Crear Nuevo Usuario" actionListener="#{mantenimientoCuentaView.abrirPanel}" > 
                    <p:ajax event="dialogReturn" listener="#{mantenimientoCuentaView.usuarioCreado}" update=":formMntCuenta" />
                </p:commandButton>

                <p:dataTable 
                                id="idUsuarios"
                                var="usu"
                                value="#{mantenimientoCuentaView.lstUsuario}" 
                                rows="20"
                                resizableColumns="true"
                                paginator="true" 
                                paginatorPosition="bottom"
                                paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                                rowsPerPageTemplate="5,10,15"                                 
                                selectionMode="single"
                                selection="#{mantenimientoCuentaView.usuarioSeleccionado}"
                                widgetVar="usu"
                                emptyMessage="Sin usuarios :(" 
                                rowKey="#{usu.intUsuarioPk}"
                                style="height: 100%;">    

                        <p:ajax event="rowSelect" listener="#{mantenimientoCuentaView.cargarContrato}" update=":formContratos:"/>

                        <f:facet name="header">
                            <p:outputPanel style="text-align: left;">
                                <p:inputText id="globalFilter" onkeyup="PF('usu').filter();" style="width:200px" placeholder="Buscar usuario"/>
                            </p:outputPanel>
                        </f:facet>
                        
                        
                        
                        <p:column filterBy="#{usu.strEmail}" filterMatchMode="contains" headerText="Usuario" >
                            <f:facet name="filter">
                                <h:outputText value="#{usu.strEmail}" />
                            </f:facet>
                            <h:outputText value="#{usu.strEmail}" />
                        </p:column>

                        <p:column filterBy="#{usu.strDescripcion}" filterMatchMode="contains" headerText="Descripción">
                            <f:facet name="filter">
                                <h:outputText value="#{usu.strDescripcion}" />
                            </f:facet>
                            <h:outputText value="#{usu.strDescripcion}" />
                        </p:column>
                        <p:column filterBy="#{usu.strEmpresaDesc}" filterMatchMode="contains" headerText="Empresa">
                            <f:facet name="filter">
                                <h:outputText value="#{usu.strEmpresaDesc}" />
                            </f:facet>
                            <h:outputText value="#{usu.strEmpresaDesc}" />
                        </p:column>
                        <p:column filterBy="#{usu.strFechaRegistro}" filterMatchMode="contains" headerText="Fecha Creación" style="text-align: center;">                                   
                            <f:facet name="filter">
                                <h:outputText value="#{usu.strFechaRegistro}" />
                            </f:facet>
                             <h:outputText value="#{usu.strFechaRegistro}" />
                        </p:column>
                        
                        <p:column filterBy="#{usu.strTipoUsuario}" filterMatchMode="exact" headerText="Tipo de usuario" style="text-align: center;">
                            <f:facet name="filter">
                                <p:selectOneMenu onchange="PF('usu').filter()" >
                                    <f:selectItem itemLabel="Selecciona" itemValue="#{null}" noSelectionOption="true" />
                                    <f:selectItems value="#{mantenimientoCuentaView.tipoUsuario}" />
                                </p:selectOneMenu>
                            </f:facet>                             
                            <h:outputText value="#{usu.strTipoUsuario}" />
                        </p:column>
                        
                        
                        
                        <p:column headerText="Editar" style="width:50px;text-align: center;">
                            <p:commandButton icon="ui-icon-pencil" update=":formMntCuenta" actionListener="#{mantenimientoCuentaView.editarUsuario(usu)}" >
                                <p:ajax event="dialogReturn" listener="#{mantenimientoCuentaView.usuarioActualizado()}" update=":formMntCuenta" />
                            </p:commandButton>
                        </p:column>
                    </p:dataTable>

            </h:panelGrid>
         </h:form>
        
        <h:form id="formContratos">
        
            <h1>Contratos</h1>
            <p:separator/>
            <h:panelGrid border="0" columns="1" >  

                <p:growl id="msg" showDetail="true" life="4000" />
                
                <p:panel id="panelContrato" widgetVar="panelContrato" >
                         
                    <h:panelGrid  id="pnlContrato" columns="3" cellpadding="5" style="margin-left: 20px">                     
                         
                         
                         <h:outputLabel for="strUsuario" value="Usuario : " />
                         <p:inputText id="strUsuario" value="#{mantenimientoCuentaView.contratoFormulario.usuario.usIdMail}" required="false" size="60" maxlength="100" disabled="true"/>
                         <p:message for="strUsuario" display="icon" /> 
                         
                         <h:outputLabel for="strTarifa" value="Tarifa : " />
                         <p:selectOneMenu id="strTarifa" value="#{mantenimientoCuentaView.contratoFormulario.tarifa.taIdTarifaPk}"  required="false" maxlength="100" >
                            <f:selectItem itemLabel="Selecciona un tipo de documento" itemValue="" />
                            <f:selectItems value="#{mantenimientoCuentaView.lstTarifa}" var="tari" itemLabel="#{tari.taTxDescripcion}" itemValue="#{tari.taIdTarifaPk}" />
                            <!--p:ajax update="idEvaluados" /-->
                         </p:selectOneMenu>
                         <p:message for="strTarifa" display="icon" /> 
                         
                         <h:outputLabel for="strTipoContrato" value="Tipo de Contrato : " />
                         <p:selectOneMenu id="strTipoContrato" value="#{mantenimientoCuentaView.contratoFormulario.coIdTipoContrato}"  required="false" maxlength="100" >
                            <f:selectItem itemLabel="Selecciona un tipo de documento" itemValue="" />
                            <f:selectItems value="#{mantenimientoCuentaView.lstTipoContrato}" var="tipo" itemLabel="#{tipo.taTxDescripcion}" itemValue="#{tipo.taIdTarifaPk}" />
                            <p:ajax update="strNLiTotal,strNLiDisponible" />
                         </p:selectOneMenu>
                         <p:message for="strTipoContrato" display="icon" /> 
                         
                         <h:outputLabel for="strFecCreacion" value="Fecha Creación : " /> 
                         <p:calendar id="strFecCreacion" value="#{mantenimientoCuentaView.contratoFormulario.coFeCreacion}" pattern="MM/dd/yyyy" effect="fold" required="false" />
                         <p:message for="strFecCreacion" display="icon" /> 
                         
                         <h:outputLabel for="strNLiTotal" value="N. Lincencia Total : " />
                         <p:inputText id="strNLiTotal" value="#{mantenimientoCuentaView.contratoFormulario.coNuLicenciaTotal}" required="false" size="60" maxlength="100" disabled="#{mantenimientoCuentaView.contratoFormulario.coIdTipoContrato==23?false:true}" />
                         <p:message for="strNLiTotal" display="icon" /> 

                         <h:outputLabel for="strNLiDisponible" value="N. Lincencia Disponible: " />
                         <p:inputText id="strNLiDisponible" value="#{mantenimientoCuentaView.contratoFormulario.coNuLicenciaDisponible}" required="false" size="60" maxlength="100" disabled="#{mantenimientoCuentaView.contratoFormulario.coIdTipoContrato==23?false:true}" />
                         <p:message for="strNLiDisponible" display="icon" /> 
                         
                         <h:outputLabel for="strFecCulminacion" value="Fecha Culminación : " /> 
                         <p:calendar id="strFecCulminacion" value="#{mantenimientoCuentaView.contratoFormulario.coFeCulminacion}" pattern="MM/dd/yyyy" effect="fold" required="false" />
                         <p:message for="strFecCulminacion" display="icon" /> 
                         
                         <h:outputLabel for="strEstado" value="Estado : " />
                         <p:selectOneMenu id="strEstado" value="#{mantenimientoCuentaView.contratoFormulario.coIdEstado}"  required="false" maxlength="100" >
                            <f:selectItem itemLabel="Selecciona un tipo de documento" itemValue="" />
                            <f:selectItems value="#{mantenimientoCuentaView.lstEstadoContrato}" var="esta" itemLabel="#{esta.taTxDescripcion}" itemValue="#{esta.taIdTarifaPk}" />
                         </p:selectOneMenu>
                         <p:message for="strEstado" display="icon" /> 
                         
                    </h:panelGrid>
                    <f:facet name="footer">
                         <p:commandButton value="Grabar" update=":formContratos:idContratos,:formContratos:msg" actionListener="#{mantenimientoCuentaView.grabarContrato}"/>                        
                         <p:commandButton value="Limpiar" update=":formContratos" actionListener="#{mantenimientoCuentaView.resetFail}" style="margin-right:20px;" /> 
                    </f:facet>
                </p:panel>  

                <p:dataTable 
                                id="idContratos"
                                var="cont"
                                value="#{mantenimientoCuentaView.lstContrato}" 
                                rows="20"
                                paginator="true" 
                                paginatorPosition="bottom"
                                paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                                rowsPerPageTemplate="5,10,15"                                 
                                selectionMode="single"
                                selection="#{mantenimientoCuentaView.contratoSeleccionado}"
                                widgetVar="idContratos"
                                emptyMessage="No contratos tarifas registrados" 
                                rowKey="#{cont.coIdContratoPk}"
                                style="height: 100%;">    
                        
                        <p:ajax event="rowSelect" listener="#{mantenimientoCuentaView.editContrato}" update=":formContratos:pnlContrato,:formContratos:msg"/>
                        
                        <p:column filterBy="#{cont.tarifa.taIdTarifaPk}" filterMatchMode="contains" headerText="Tarifas" >
                            <f:facet name="filter">
                                <h:outputText value="#{cont.tarifa.taIdTarifaPk}" />
                            </f:facet>
                            <p:selectOneMenu value="#{cont.tarifa.taIdTarifaPk}"  disabled="true" >
                                <f:selectItems value="#{mantenimientoCuentaView.lstTarifa}" var="tari" itemLabel="#{tari.taTxDescripcion}" itemValue="#{tari.taIdTarifaPk}" />                                
                            </p:selectOneMenu>
                        </p:column>
                        
                        <p:column filterBy="#{cont.coIdTipoContrato}" filterMatchMode="contains" headerText="Contrato" >
                            <f:facet name="filter">
                                <h:outputText value="#{cont.coIdTipoContrato}" />
                            </f:facet>
                            <p:selectOneMenu value="#{cont.coIdTipoContrato}"  disabled="true" >
                                <f:selectItems value="#{mantenimientoCuentaView.lstTipoContrato}" var="tipo" itemLabel="#{tipo.taTxDescripcion}" itemValue="#{tipo.taIdTarifaPk}" />
                                
                            </p:selectOneMenu>
                        </p:column>
                        
                        <p:column filterBy="#{cont.coFeCreacion}" filterMatchMode="contains" headerText="Fecha Creación" >
                            <f:facet name="filter">
                                <h:outputText value="#{cont.coFeCreacion}" />
                            </f:facet>
                            <h:outputText value="#{cont.coFeCreacion}" />
                        </p:column> 
                         
                        <p:column filterBy="#{cont.coNuLicenciaTotal}" filterMatchMode="contains" headerText="Licencias Total" >
                            <f:facet name="filter">
                                <h:outputText value="#{cont.coNuLicenciaTotal}" />
                            </f:facet>
                            <h:outputText value="#{cont.coNuLicenciaTotal}" />
                        </p:column>

                        <p:column filterBy="#{cont.coNuLicenciaDisponible}" filterMatchMode="contains" headerText="Licencias Disponibles">
                            <f:facet name="filter">
                                <h:outputText value="#{cont.coNuLicenciaDisponible}" />
                            </f:facet>
                            <h:outputText value="#{cont.coNuLicenciaDisponible}" />
                        </p:column>
                        
                        <p:column filterBy="#{cont.coFeCulminacion}" filterMatchMode="contains" headerText="Fecha Creación" >
                            <f:facet name="filter">
                                <h:outputText value="#{cont.coFeCulminacion}" />
                            </f:facet>
                            <h:outputText value="#{cont.coFeCulminacion}" />
                        </p:column>
                        
                        <p:column filterBy="#{cont.coIdEstado}" filterMatchMode="contains" headerText="Estado" >
                            <f:facet name="filter">
                                <h:outputText value="#{cont.coIdEstado}" />
                            </f:facet>
                            <p:selectOneMenu value="#{cont.coIdEstado}"  disabled="true" >
                                <f:selectItems value="#{mantenimientoCuentaView.lstEstadoContrato}" var="est" itemLabel="#{est.taTxDescripcion}" itemValue="#{est.taIdTarifaPk}" />                                
                            </p:selectOneMenu>
                        </p:column>
                        
                        <p:column headerText="Eliminar" style="width:50px;text-align: center;">
                            <p:commandButton icon="ui-icon-trash" update=":formContratos:idContratos,:formContratos:msg" actionListener="#{mantenimientoCuentaView.borrarContrato(cont)}" >
                                <p:confirm header="Confirmacion" message="Esta seguro que quiere borrar este contrato? Recuerda el contenido no podrá recuperarse" icon="ui-icon-alert" />
                            </p:commandButton>
                        </p:column>
                        
                    </p:dataTable>

            </h:panelGrid>
         </h:form>
        <h:form prependId="false">
            <p:idleMonitor timeout="3600000" >
                <p:ajax event="idle" listener="#{usuarioSesion.timeout()}" oncomplete="PF('timeoutDlg').show();"/>
            </p:idleMonitor>
            <p:dialog header="Aviso de cierre de sesión" widgetVar="timeoutDlg" width="300" closable="false" maximizable="false" resizable="false" draggable="false" closeOnEscape="false" modal="true" >
                <h:panelGrid border="0" columns="1" >
                <h:outputText value="Por seguridad su sesión fue cerrada tras 60 minutos de inactividad." />
                <p:button outcome="iniciar" value="Ok" /> 
                </h:panelGrid>
            </p:dialog> 
        </h:form>
    </ui:composition>

</h:body>
</html>